約 4,334,077 件
https://w.atwiki.jp/limixp/pages/11.html
エディション JDKのバージョンについて JDKのダウンロード JDKのインストール 環境変数の設定 JDKインストールの確認 Javaでプログラミングを行うためにはJava開発環境(JDK)をインストールする必要があります。 JDKをインストールするとJava実行環境(JRE)も同時にインストールされます. エディション Java PlatformのエディションはJava SE, Java EE, JavaMEの3つがありました.今回は一般のクライアントPC向けとしてJava SE(Standard Edition)をインストールします。 JDKのバージョンについて 現在(2008年4月),出回っているのは主に1.4, 1.5, 1.6の3つのバージョンです.最新のバージョンは1.6です.JDKのバージョンが異なると,若干の仕様の違いが出てきます.例えば,バージョン1.4ではエラーもなくコンパイルできていたJavaのソースを,バージョン1.5の環境に持ってきてコンパイルするとエラーになったりすることがあります. またJDKバージョン1.6でコンパイルしたバイトコード(classファイル)を,Java実行環境(JRE)バージョン1.4や1.5などの古いバージョンで実行しようとするとエラーとなります.逆に古いバージョンのJDK1.4, 1.5でコンパイルしたバイトコードは,新しいバージョンのJRE1.6で実行することができます. つまり,JDKのバージョンとJREのバージョンには注意する必要があります.安全にJavaプログラムを動作させたい場合は,JREのバージョンを最新にし,JDKのバージョンは古いものを使っていれば良いと思います. 当wikiサイトではJDKのバージョンを1.5, JREのバージョンを1.6とします. JDKのダウンロード 最新のJDK(Java SE)はSun Developer Networkからダウンロードすることができます.(Sun Microsystems社のページからはJREしかダウンロードできないので注意してください.) JDK 1.5 ダウンロード 上記のリンク先へ飛んだときダウンロードできるものがたくさんあるため,どれをダウンロードしていいか迷ってしまった経験は誰しも最初はあったと思います.そこで簡単に整理しておきます. JDK 5.0 Update 15 これだけあればJava開発環境が整います.まさに求めているJ2SE 1.5のJDKです. JDK 5.0 Update 9 with Java EE これはJ2EEです.サーバで使う機能も一緒にダウンロードできます.ここでは必要ありません. JDK 5.0 Update 15 with NetBeans IDE 6.0.1 これはJ2SE 1.5と一緒に統合開発環境NetBeansもダウンロードできます.NetBeansは無償で利用可能なIDEで,Eclipseと同じようなものです.Eclipseと違い,プラグインを必要としない完全日本語対応のツールです.NetBeansは使ったことがないので詳しいことはよくわかりません. Java Runtime Environment(JRE) 5.0 Update 15 これは実行環境だけです.Javaを実行できるようにはなりますが,開発することはできません. J2SE 5.0 JDK ソースコード Javaはオープンソースなのでソースが公開されています. J2SE 5.0 ドキュメント APIドキュメントです. ということで,JDK 5.0 Update 15のダウンロードページにいきます. まずはプラットフォームと言語を選択します.x64とかは64ビットマイクロプロセッサを指します.高性能なサーバ用のCPUのことなので,一般的なPCを使用している場合はx64がついてないプラットフォームを選択します. 言語はmulti-languageでいいと思います(選択できない).そしてライセンス契約書に同意のチェックを付けてContinueをクリックします. するとインストーラのダウンロードページに遷移します. オフラインインストール(インストーラをダウンロードする)とオンラインインストール(インストーラをダウンロードしない)を選択できます.オフラインインストールの場合はデスクトップにでもインストーラをダウンロードしましょう. JDKのインストール 環境変数の設定 JDKインストールの確認 トップページ
https://w.atwiki.jp/java_pro/pages/27.html
import java.io.*; public class Copy1_2 { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line = reader.readLine(); while (line.charAt(0) != a ){ System.out.println(line); line = reader.readLine(); } System.out.println("終了します"); } catch (IOException e){ System.out.println(e); } } }
https://w.atwiki.jp/tamorintech/pages/14.html
別ページにまとめてるもの。 Javaのプリミティブラッパークラスはすべて不変である。 サーブレットのセッション管理(2012/3/18 旧ブログから移行) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) 集約とコンポジション(2012/3/18 旧ブログから移行) サーブレットコンテナ(2012/3/18 旧ブログから移行) JNDIってどんなものなのか。(2012/3/7)何となくの理解。 Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行)DB側の話。 Java側の話。 上記からわかったこと! PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) アノテーションとは。(2012/2/4 旧wikiから移行) 別ページにまとめてるもの。 log4j Android Javaのプリミティブラッパークラスはすべて不変である。 よって、ラッパークラスオブジェクトを参照値渡ししてメソッド内で計算しても、メソッド呼び出し側のオブジェクトには結果が反映されない。 private void exec() { Integer value = new Integer(5); System.out.println("メソッド実行前のint値 " + value.toString()); increment(value); System.out.println("メソッド実行後のint値 " + value.toString()); } private void increment(Integer integer) { // 内部的には // integer = new Integer( integer.intValue() + 1 ); // のようなことが行われている。つまりメソッド内のinteger は別の新しいオブジェクトを参照することになる。 integer++; System.out.println("メソッド内での計算結果 " + integer.toString()); } メソッド実行前のint値 5 メソッド内での計算結果 6 メソッド実行後のint値 5 サーブレットのセッション管理(2012/3/18 旧ブログから移行) 今日はホントにメモだけ!(時間ないからね!) サーブレット・JSPのライフサイクル(2012/3/18 旧ブログから移行) とりあえずメモだけアップしておく。まだ目的は達成してないけど・・・。 知りたいことは以下のこと。Tomcat(サーブレットコンテナ)がクラスをロードしたり、サーブレットのinit / service / destroy の呼び出しを行っている部分の詳細な動きが知りたい。 JSPリソースへのリクエストを受け取ったとき、それをJSPから変換したサーブレットへのリクエストへと切替えている部分の詳細な動き。 Tomcatはサーブレットのインスタンスをどのようにしてシングルトンで管理しているのか。 やっぱりTomcatのソースをじっくり読みたい・・・。 集約とコンポジション(2012/3/18 旧ブログから移行) 新人の後輩から質問されて答えられず。そもそも明確な違いは定義しにくく、「曖昧」らしい。 集約とコンポジション、Javaのコードに落とせばどちらも同じ。「全体」のメンバ変数に「部分」のオブジェクトが定義されていることになる。 上記は車クラスが「全体」であるのに対し、車体・エンジン・タイヤクラスが「部分」にあたる。ひし形の色は白なので集約の関連があることを表している。 車クラスをJavaコードにすると以下のようになる。 public class Car { private Body body; private Engine engine; private Tyre tyre; ・・・ } クラス図のひし形の部分が黒で塗りつぶされていて、コンポジションをあらわしていたとしても車クラスは上記と同じコードとなる(のはず)。 他の技術系の記事を参考にすると、コンポジションは両オブジェクト間のライフサイクルが同じ、もしくは強い依存の関係にある場合に使用する。 ということは、集約とコンポジションでJavaコードに違いが出てくるところと言えばオブジェクトの生成の仕方とかだろうか? 車クラスと車体・エンジン・タイヤクラスがコンポジションの関連にある場合、車クラスのコンストラクタで車体・エンジン・タイヤクラスのオブジェクトを必ずnewするとか。もしくはメンバ変数の宣言部でnewしちゃうとか。 public class Car { private Body body = new Body(); private Engine engine = new Engine(); private Tyre tyre = new Tyre(); ・・・ } まぁその辺りも想定するシナリオとかで変わってくる気がする…。 とにかく、集約とコンポジションの違いについて深く悩むことにあまり価値はないと自分に言い聞かせる。(笑) サーブレットコンテナ(2012/3/18 旧ブログから移行) サーブレットコンテナというキーワードで少し勉強した。一番知りたかったのは、「Webサーバ」と「サーブレットコンテナ」の機能の切り分け。 サーブレットコンテナについては前よりイメージがわいてきた。Servlet API / JSP API の参照実装(RI)であること。HttpServletの実装をTomcat等のサーブレットコンテナは持っている。 サーブレットのインスタンス化や破棄など、ライフサイクルの管理を行っていること。 3つの動作形態の種類があること。スタンドアロン型-サーブレットコンテナ自身がWebサーバを内蔵している。Tomcatはこれにあたるので、単体でサーブレットアプリケーションを動かせる。 内部プロセス型 外部プロセス型 Tomcatの設定ファイルを覗いてみるとなんとなく仕組みがわかってくる。なんとなくだが・・・ Connector がWebサーバ機能を担う定義なんじゃなかろうか。 他のWebサーバを使用するため、TomcatのWebサーバの機能をOFFにするにはserver.xmlの Connector 要素を削除するって書いてあったし。 ここでの機能は、クライアントからのリクエストをサーブレットコンテナ(エンジン)に渡すこと。 結局、Webサーバの詳細な機能ははっきりとわからなかった。サーブレットコンテナというキーワードを絡めずに、Webサーバそのものについて今後調べないと! ところで、サーブレットアプリケーションのメインプログラムは何なのか?Javaプログラムはmainメソッドの起動から始まる、と教えてもらったはず。ちょっと調べてみたところ、Tomcatの場合、Bootstrapクラスがそれに当たる模様。 確かにBootstrapクラスにはmainメソッドがあり、Tomcatの起動用スクリプトを見てみてもBootstrapクラスをjavaコマンドにより実行しているようだ。 ただこのBootstrap.classがbootstrap.jarとcatalina.jarという二つのjarファイルに存在する。 これは同じクラス(全く同じモジュール)と考えてよいのか? あ、ちなみにここまで、Tomcat 6についての話。。 5.5のディレクトリ中身を見てみたらまたちょっと違うようだ。あまり気にしなくても大丈夫かな…? JNDIってどんなものなのか。(2012/3/7) JNDIとはJava Naming and Directory Interfaceの頭文字を取ったもので、Javaから •ネーミング・サービス •ディレクトリー・サービス を扱うためのインターフェイスを規定した仕様です。 だそう。こういう定義は他でもいくつか目にするんだが、いまいちイメージがわかない。 何となくの理解。 本質ではなくwebアプリ(サーブレット)に限定した理解だが、DB接続をJNDIで行う場合は以下な感じ。DB接続情報(=DataSource)をサーバーの設定ファイル(Tomcatの場合はcontext.xml)に定義する。その実態はjava.sql.DataSourceクラス(のオブジェクト?)である。 Javaプログラムでは、java.naming.InitialContext#lookupメソッドで、定義したDataSourceを取得する。 DataSource#getConnectionメソッドでjava.sql.Connectionを取得し、DB接続が開始できる。 以下を読むと上記の実装例があり、どんなものかが少しわかった。ありがたい。http //www.javaroad.jp/opensource/js_tomcat8.htm http //blogs.yahoo.co.jp/kensinisnek/11707751.html Java -- DBでの日付・日時のデータについて。(2012/2/5 Evernoteから移行) DB側の話。 標準のSQL(?)では、日付・時刻のデータを持つカラムの型は以下のとおりとなっているようだ。DATA日付のみのデータを持つ。 TIME時刻のみのデータを持つ。精度(桁数?)は指定できる。 TIMESTAMP日付+時刻のデータを持つ。精度は指定できる。 Java側の話。 ここで扱う日付・日時に関するクラスの継承関係は以下のとおり。java.util.Datejava.sql.Date java.sql.Time java.sql.Timestamp java.util.Date日付と日時の両方のデータを持つ。時刻はミリ秒まで。 java.sql.Date日付のデータのみ持つ。基底クラス(java.util.Date)の時・分・秒・ミリ秒には0が設定される。 java.sql.Time時刻のデータのみ持つ。基底クラス(java.util.Date)の年・月・日には1970年1月1日が設定される。 java.sql.Timestamp日付と時刻のデータを持つ。時刻はナノ秒まで。 java.sql.ResultSetインターフェースについて。getDateメソッド:java.sql.Dateを返す。 getTimeメソッド:java.sql.Timeを返す。 getTimestampメソッド:java.sql.Timestampを返す。 上記からわかったこと! テーブルに対応するデータオブジェクト(エンティティクラス)を設計するとき、DBのDATE、TIME、TIMESTAMPのカラムに対応するプロパティは、java.sqlパッケージのクラスを使えってことだね。 PATH環境変数とCLASSPATH環境変数は全く関係ないものなんですよ。(2012/2/4 旧wikiから移行) PATH環境変数は、OSがプロンプトから入力されたコマンドに対するプログラムを検索する際の検索先である。 CLASSPATH環境変数はJavaソースのコンパイル時、プログラム実行時に必要となるクラスファイルを検索する際の検索先である。 よって2つはなんら関係ないものである。 サーブレットの認証方式。(2012/2/4 旧wikiから移行) サーブレットにおける認証方式の種類は以下のものがある。Basic認証:HTTPのBasic認証を使った方式。 Digest認証:HTTPのBasic認証を使うが、パスワードをダイジェストエンコードして暗号化する。 Form認証:HTMLのformを使ってユーザーIDとパスワードを入力する。 Client-Cert認証:クライアント証明書を使って認証を行う方式。 Tomcat標準のレルムレルムとは、ユーザーIDとパスワードをサーバー側でどのように管理するかの設定方法である。XMLベースのテキストファイルやデータベース等がある。 UserDatabaseRealmTomcatでデフォルトで設定されている方式。 ID、パスワード、ロールをtomcat-user.xmlファイルに記載する。 UserDatabaseに対して行った変更が変更情報としてtomcat-user.xmlファイルに書き込まれる? JDBCRealmID、パスワード、ロールをデータベースに格納し、JDBC経由で認証を行う。 JNDIRealmNIS、ActiveDirectory等のディレクトリサービスにID、パスワード、ロールを格納しJNDI経由で認証を行う。 DataSourceRealmJDBC経由で認証を行うが、JDBCへの接続にJNDIルックアップを使用する。 サーブレットはスレッドセーフに。(2012/2/4 旧wikiから移行) サーブレットのインスタンスは(基本的に)1つのみサーブレットコンテナにより作成される。 クライアントからの要求は複数同時に処理される。1リクエスト=1スレッドと考えてよい。 スレッドに関して、サーブレットコンテナは以下の特徴がある。サーブレットコンテナはスレッドプールを持っており、そこに複数のスレッドを蓄えている。 サーブレットコンテナはクライアントからリクエストを受け付けると空きスレッドを割り当て、サーブレットに渡して処理を移譲する。サーブレットのインスタンス数は1つである。 スレッドローカルとは。(ThreadLocal)(2012/2/4 旧wikiから移行) ThreadLocalは、スレッド毎の値を保持する為のクラス。 あるクラス(のインスタンス)がマルチスレッドで呼ばれる際に、スレッド毎に異なる値(インスタンス)を使いたい場合に使用する。 自分でThread(やRunnable)を使ってマルチスレッド化しているならスレッド毎の値が保持できるので、ThreadLocalを使用しても意味がない。 しかし、Webアプリケーション(サーブレット)は1つのインスタンスがマルチスレッドで呼ばれるので、そのスレッド毎に別のインスタンスを保持したいときはとても便利である。 アノテーションとは。(2012/2/4 旧wikiから移行) アノテーションとは、プログラムの動作に影響を与えない注釈、メタデータ。クラスやメソッド、パッケージ等に付与する。 コメントとの主な違いは以下のとおり。プログラムでアノテーションを読み取って処理できる。 アノテーションはコンパイラの動作に影響を与える。 標準アノテーションとして以下のようなものが定義されている。(J2SE 5.0)Override Deprecatedそのメソッドの使用が推奨されないことを示す。(Javadocの@deprecatedと同じ意味を持つ。) そのメソッドを使用するとコンパイル時に警告が出る。 SuppressWarningコンパイル時の警告を抑制する。 抑制する警告の種別はアノテーションの文字列配列の引数を渡すことにより指定が可能。 アノテーションの定義の仕方。「@interface」でアノテーションが定義できる。 以下のように型定義の本体が空のアノテーションをマーカーアノテーションという。 public @inteface Myannotation{ } 同じアノテーションをクラス、メンバ変数、メソッド、それぞれに適用できるようだ。 @Myannotation() public class TestMain { @Myannotation() private String var; @Myannotation() public static void main(String[] args) { } }
https://w.atwiki.jp/chapati4it/pages/16.html
Java Javaは、サーバサイドによく利用されているプログラム言語です。 最近では、アンドロイドでも利用されています。 Javaサンプル 無名クラスにパラメータを渡す CSVファイルを読み込む Javaの乱数生成 乱数生成の性能 JavaでGMailによるメール送信(JavaMail使用 JavaでZipファイル解凍サンプル(commons-compress使用) JavaでZipファイル圧縮(commons-compress)テキスト一個だけ JavaでZipファイル圧縮(commons-compress)ファイルやディレクトリ指定 スネークケースとキャメルケースの変換 日付、時間を扱うサンプル 処理時間を計測するサンプル 文字列を切り取る substring の使い方 substring使用時のエラーと回避方法??? swingサンプル 基本 ウィンドウを表示するだけのサンプル JButton ボタンをクリックしたらメッセージを表示するサンプル Swingアプリを実行する 画像表示 画像表示(拡大縮小) ポップアップメニュー メニューを作る ファイル選択ダイアログから画像を選択して表示する コンボボックスを使ってみよう エクスプローラからファイルをドロップ ドロップを受け取るサンプル(文字列、ファイル) JListを表示するだけのサンプル JListにアイコンとテキストを表示する JList複数選択、単一選択サンプル JTableにCsvファイルを読み込んで表示 JTableエクスプローラ風サンプル JSliderサンプル JSliderサンプル ボリューム調整みたいなスライダ JSliderサンプル プログラムから操作する時にイベントを発生させない JSliderサンプル ボリューム調整みたいなスライダのUIクラス Zipファイル解凍サンプル JTableに一覧表示、ダブルクリックで画像を表示 MyJCalendar Swingでカレンダー型日付選択ダイアログのサンプル メニュー、タイトルバー、ステータスバー、ツールバーの表示on/off切り替えサンプル tips ウィンドウサイズをiniファイルに保存、復元 JTreeにディレクトリ構造を表示 JTreeとJListで作るエクスプローラ風のサンプル JTreeノード編集、前後の値をチェックする JTableにボタン表示、ボタン押したら行削除 フローレイアウトで強制改行 MP3プレイヤーサンプル(JLayer) MP3プレイヤーサンプル(JLayer,BasicPlayer) MP3のID3を読むサンプル(Java ID3 Tag Library + 文字化け対応) MP3プレイヤーサンプル(JLayer,BasicPlayer,Java ID3 Tag Library)一通りの機能実装 BasicPlayerサンプル(mp3, 音量調整) BasicPlayerサンプル(mp3, シーク, 時間表示) オリジナルのイベントを作ろう 帳票サンプル JasperReports5.0サンプル サンプルの実行 一番簡単なPDF出力 テンプレートにデータソースとパラメータ設定してPDF出力 CSVデータソースからPDF出力 PDFに動的に画像を埋め込み グループ分けと集計 Tomcatサンプル Tomcatメモ Tomcat7.0.37のインストールとeclipseの設定(Windows) サーブレットを作ってみる Tomcat7のインストールとwarファイルのデプロイ(ubunts12.04) warファイルをdotcloudにデプロイ サーブレットからJSPに遷移するサンプル サーブレットからCSVファイルをダウンロードするサンプル サーブレットからCSVファイルをダウンロードするサンプル(日本語ファイル名) サーブレットからファイルをダウンロードするサンプル(日本語ファイル名) Basic認証(UserDatabaseRealm)+DIGEST認証 JFreeChartで動的にグラフを出力するサンプル ファイルをアップロードするサンプル(Commons FileUplaod) クロスサイトスクリプティング脆弱性を体験してみるサンプル
https://w.atwiki.jp/sevenlives/pages/24.html
Java 読み:じゃば 英語:Java 別名: 意味: JavaとはSun Microsystems社が開発した高級プログラミング言語のこと。 広義でJavaの実行環境を含めたJava周辺の技術の総称。 従来のC/C++などの言語の欠点をなくそうとして設計されたため、さまざまな利点から爆発的に普及した。 特徴: オブジェクト指向言語である。 C、C++といった言語をモデルとしてるためそれらと似た文法で学びやすい。 JVMによって一度バイトコードに変えられてから実行されるため、WORAを実現。 ガーベージ・コレクションを実装し、メモリを直接操作できなく安全性が高い。 ネットワークやGUI関連など考え抜かれた豊富な標準ライブラリがある。 例外処理でエラーを搬出し処理ができるため安全性が高い。 型に厳密であり、きちっと分けられた文法やアクセス修飾子等で機密性が高く堅牢なコードが書ける。 などの特徴がある。 プログラムはJavaの仕様で基本はUnicodeで書かなければならない。 デスクトップ仕様やサーバ向けモバイル向けなどで使い分ける JavaとJava SE【J2SE】、Java EE【J2EE】、Java ME【J2ME】といった3種類の技術体系がある。 Javaは様々な分野に広がっており、単にプログラミング言語としてだけではなく、広義でJavaプラットフォームを含むJavaの様々な体系全体を指すようになっている。 2015年09月21日 静的型言語? JVM 【Java仮想マシン】 WORA Oak? KVM? バイトコード【byte code】 OOP AOP? JNI JNA? ガーベッジ・コレクション【GC】 クラス・ライブラリ? クラス・ローダ? クラス・パス マーシャリング コメント(Java) Javadoc Duke? JavaBeans JavaFX APIJDBC 非推奨【deprecated】? エポック 完全修飾名 ワイルドカード【wild card】 ユニコード・エスケープ? マルチスレッド? スレッドセーフ sandbox デッドロック? サンドボックス システム・リソース? システム・プロパティ? ストリーム? バッファリング フィルタリング コレクション・フレームワーク デザインパターン? BGGA? HotSpot BeanShell? リテラル 識別子(Java)? 予約語(Java) 変数(Java)? 定数(Java) サフィックス 配列(Java)ジャグ配列? 参照値 camelCaps ■ オブジェクト指向(Java) オブジェクト(Java) クラス【class】(Java)フィールド【field】(Java) メソッド【method】(Java) コンストラクタ(Java) ファイナライザ? スタティック・イニシャライザ? パッケージ【package】 メンバー インスタンス【instance】(Java) エントリ・ポイント(Java) デフォルトコンストラクタ(Java) オーバーロード オーバーライド アクセス制御(Java)? アクセサ 継承(Java) スーパークラス【親クラス】? サブクラス【子クラス】? シグネチャ(Java) 抽象クラス 具象クラス インターフェース【interface】(Java) カプセル化 ポリモーフィズム【多態性】 インピーダンス・ミスマッチ イミュータブル・オブジェクト RMI? ■ 修飾子(Java) abstract? static? final? アクセス修飾子(Java)public(Java) protected(Java)? private(Java)? serializable? transient? strictfp? native? ■ 開発 JDK JRE JAR? JCP Javaコマンド Concurrency Utilities? Tiger?アノテーション? ジェネリクス ボクシング?オートボクシング アンボクシング? 拡張ループ文 Mustang?Java Compiler API? scripting framework? ドラッガブルアプレット? フリースタイル? MVC リファクタリング DI IoC? アサーション? リフレクション? JavaBean? EoD? POJO? O/Rマッピング JPA? JavaOne TCK? ■ 開発環境? EclipseJUnit? CVS EclipseUML? NetBeans Ant Subversion? JMeter? UML Groovy? GCJ? OpenJDK? Scala ■ Java API? java.?java.lang java.io java.system? java.util javax.? ■ 型 プリミティブ型?byte? integer(Java)? short? long? double(Java)? float(Java)? char(java)? boolean(Java)? クラス型(Java)? キャスト ナローイング変換? 自動型変換? ■拡張 Apache Commons?Collections? Apache Commons Collections ■ Java SE? Java AppletAWT swing SWT? JFace? JavaFX ■ Java EE Servlet JSP EJB DTO? フレームワークStruts Spring JSF? GlassFish? ■ Java ME? CDC? CLDC? MIDP? DoJa? MEXA? JavaCard? ■ Javaバージョン? Java 1.3 Java 1.4? Java 5.0? Java 6.0 Java 7? Java 8? [PR] 中古 ビジネスホン
https://w.atwiki.jp/redcloud/pages/22.html
目次 目次 前提条件 JDK1.6 インストール 環境設定 Ant インストール 環境設定 前提条件 CentOS5.4上に構築する JDK1.6 インストール (公式サイトから JDKのrpm.bin ファイルをダウンロードしておく) $ sudo chmod +x jdk-6u17-linux-i586-rpm.bin $ sudo ./jdk-6u17-linux-i586-rpm.bin 環境設定 $ vi ~/.bash_profile JAVA_HOME=/usr/java/jdk1.6.0_17 ←行追加 export JAVA_HOME ←行追加 PATH=$JAVA_HOME/bin $PATH $HOME/bin ←$JAVA_HOME/bin追加 $ source ~/.bash_profile Ant インストール $ wget http //ftp.kddilabs.jp/infosystems/apache/ant/ant-current-bin.zip $ unzip ant-current-bin.zip $ sudo mv apache-ant-1.7.1 /usr/local # cd /usr/local # chown -R root.root apache-ant-1.8.0RC1 # ln -s apache-ant-1.8.0RC1 ant 環境設定 $ vi ~/.bash_profile ANT_HOME=/usr/local/ant ←行追加 export ANT_HOME ←行追加 PATH=$ANT_HOME/bin $JAVA_HOME/bin $PATH $HOME/bin ←$ANT_HOME/bin追加 $ source ~/.bash_profile
https://w.atwiki.jp/thiroyoshi/pages/47.html
senでwiki辞書を使う 以下で紹介されてる方法でできるらしい http //d.hatena.ne.jp/nodchip/20090309/1236615706 形態素解析 これまで、形態素解析にcabochaを使ってたわけですが、javaでMecabを実装したとかいうのがあったみたいで…。 http //ultimania.org/sen/ つーかYahoo!がそういうのしてくれるAPIを公開していたらしい。アンテナは大きく広げておかないといかんもんだなぁ… http //developer.yahoo.co.jp/webapi/jlp/da/v1/parse.html 下のサイトはサンプル公開してる。 http //www.nilab.info/zurazure2/001036.html 形態素解析の辞書 ChasenとMecabの辞書として使えるものだそうな。公開されてる精度がよすぎてびっくり。 http //www.tokuteicorpus.jp/dist/ Java使う人にはとてもよい http //nextindex.jp/java/ Stringの文字エンコーディング 普通にプログラムするには大して問題にならないファイル名の文字コード。 webでデータ公開するとかなるとなんかこれをよくミスる。 で、見つけたよさげなサイト。参考に http //hp.vector.co.jp/authors/VA017148/java/encoding.html デーモンスレッド 使えれば使う 参考URL http //memolet.blog22.fc2.com/blog-entry-792.html GC overhead limit exceeded 調べてみたら、ガベージコレクションに時間かかりすぎやから止まった、ってことらしい。 ガベージコレクション自体はメモリの自動解放とかしてくれるけど、メモリ使用量が多いとかでスワップが多くなったりすると処理がかかるみたいだ。 で、その時間がかかりすぎるとエラー吐いて止まるってのが上のメッセージらしい。 解決にはメモリをしっかり確保すればいいってのは当たり前だが、どうしても頻発する場合などには実行時の引数に以下のものを加えるといい。 -XX -UseGCOverheadLimit 参考URL http //confluence.atlassian.co.jp/display/DOC/Fix+Out+of+Memory+errors+by+Increasing+Available+Memory#FixOutofMemoryerrorsbyIncreasingAvailableMemory-OutOfMemoryError%3AGCoverheadlimitexceeded http //ameblo.jp/f-o-p/entry-10537149611.html MySQLと連携 javaのコードからMySQLを使う場合に、JDBCドライバが必要になる。 これはMySQLのサイトからダウンロードができる。 Javaとの連携なので、downloadの中の「Connector/J」をダウンロードする。 ダウンロードしたファイルを解凍すると、いろいろ入っているが、その中にjarがある。 名前は、「mysql-connector-java-5.0.8-bin.jar」だ。 これのクラスパスを通せば、あとはjavaのファイルの中で適切なコマンドを使っていけばいい。 参考URL http //mountainbigroad.jp/fc5/mysql_java.html MySQLからの日本語が文字化け まだいろいろ試していないもののメモ。 文字化けなので文字コードに問題があることは明白。 この場合にするべきは、各所での文字コードの設定。 「MySQLのデフォルト設定」 「javaコード内でのurl指定時」 くらいだが、これでも文字化けする場合があるのだ。 これはMySQLのバージョンを下げればいいこともあるらしい。 この問題があるのは、4.1.7でらしい。これをバージョンダウンすれば解消されるとさ。 またちょっとしたコードの書き換えでもいけるらしい。 str = new String(str.getBytes("ISO-8859-1"), "JISAutoDetect"); みたまんま、コード変換するみたいだ。これを取得した値に対して行ってやると解消されるとか。 でも、バージョンを下げるとこんなもんは必要ないみたい。 参考URL http //oshiete.goo.ne.jp/qa/1118005.html javaをコマンドラインで サーバーなどでjavaを動かすために覚えた。 しかし、コマンドを詳しく覚えているはずもなく… パスを通す .bashrcにjarファイルのパスをかたっぱしから通すように指定。 これぐらい重くもなんともないだろ! 実際に使ってるスクリプトは以下 jars=`ls /home/hiroyoshi/system/jar` for jar in ${jars[@]} do export CLASSPATH=$CLASSPATH /home/hiroyoshi/system/jar/$jar done やってることは簡単で、jarのファイル名を配列で全部とってきて、それにパスを当てはめてexportしてるだけ。 これでディレクトリjarにjarを追加するだけで、ログインするときに毎回読み込んでくれる。 もうパスを通す必要はない!便利! コンパイル 使ったのは実際には以下のコマンド javac -sourcepath XX/src -d XX/bin/ XX/src*/*.java XXはディレクトリ名(プロジェクト名とか) javac javaのコンパイルコマンド -sourcepath ソースファイルの場所指定オプション -d クラスファイルの出力場所指定オプション これで、srcに保存されいるパッケージでまとめられているjavaソースファイルをきちんとコンパイルできる。 また、このコンパイル時にbin内にパッケージも作られる。 ただし、srcとbinは事前に作っておく必要があるのは言うまでもない。 実行 ちょっと泥臭い方法になってしまったというか、メモるほどの事ではないが一応。 java -Xmx1g main/Main これをbinで行う。ほんとはプロジェクトのホームで実行したかったけど仕方ない…。 ファイルなどを生成するのでも、プログラム内でディレクトリ指定すればbin内には作らなくて済むので。 RSSリーダー 研究でブログを扱っているので作ってみたところのメモ。 ほとんどコピペやけど、プログラムってそんなもん。 使ってるライブラリ ROME:本プログラムのキモ。RSSを扱うためのメソッドが揃ってるみたい。 基本はこのROMEで処理します。依存とかの関係で ROME-Fetcher JDOM も必要です。JDOMはxmlを扱うライブラリで、これがないとROMEは動かない。 それぞれのライブラリはバイナリをダウンロードする。 JDOMは圧縮形式でダウンロードでき、解凍するとディレクトリができる。 この中からjdom.jarを見つけ出す。 サンプル public class RSSReader { @SuppressWarnings("unchecked") public static void main(String[] args) { //rdfでもxmlでもOK String url = "http //blog.livedoor.com/xml/article_ranking.rdf"; try { URL feedUrl = new URL(url); SyndFeedInput input = new SyndFeedInput(); SyndFeed feed = input.build(new XmlReader(feedUrl.openStream())); ArrayList SyndEntry entries = (ArrayList SyndEntry ) feed.getEntries(); System.out.println("Blog Title:" + feed.getTitle()); System.out.println("======================="); Iterator SyndEntry it = entries.iterator(); SyndEntry entry; while(it.hasNext()){ entry = it.next(); System.out.println("Title:" + entry.getTitle()); System.out.println("Date:" + entry.getPublishedDate()); System.out.println("Link:" + entry.getLink()); System.out.println("URI:" + entry.getUri()); System.out.println("Description:" + entry.getDescription().getValue()); System.out.println("---------------------"); } System.out.println("size = " + entries.size()); } catch (FeedException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } } } 参考URL スマートネットワーク開発ブログ JavaでRSSのパースをしてくれるライブラリ ROME 正規表現 すごく便利な正規表現。でもすごくわかりにくい正規表現。 そんな正規表現のメモ。 (特にJavaで使えるというものです) 全角記号 [^ぁ-んァ-ヴ一-龠0-90-9a-zA-Zー〜、] 総当たりではあるが、使えるのでよし。 意味は「ひらがなとかカタカナとか以外」 半角記号 \p{Punct} javaのAPIで定義されているものそのまま。 ただし、使うときにはこれをこのまま書くだけだと、「エスケープシーケンスは…」と怒られるので、こいつをエスケープしてやる。 つまり、 line = line.replaceAll("\\p{Punct}",""); ってすると、line内の半角記号は一掃される。 半角カタカナ [。-゚+] そのまま文字コードにのっとったもの。つまり、意味は ー。「」、・ヲァィゥェォャュョッタアイウエオカキクケコサシスセソミチツテトナニヌネノハヒフヘホマムメモヤユヨラリルレロワン゙゚ です。 また、正規表現の[a-z]のような「-」(ハイフン)の範囲表現はASCIIコードに準じたものをなっている。(参考URL参照) 例えば、コード表によると「!」から「/」を続けて範囲指定([!-/])できるが、「?」までする([!-?])と数字も選択されてしまう。 参考URL フジハラボ:Javaで入力チェックに使える正規表現まとめ ASCII文字コード
https://w.atwiki.jp/oboegakiwiki/pages/20.html
実行時のException in thread "main" java.lang.NoClassDefFoundErrorについて CLASSPATHが設定されているから。本来はなくていい(最近のヴァージョンでは)。 環境変数にCLASSPATHがあったら、「.;」を頭につけてあげる。 C \Program Files\java\..... → .;C \Program Files\java\..... Cygwinで、コンパイルや実行が出来ない javacやjavaがCygwinで認識されない時があるが(特にjava)、なんか知らない間に出来るようになってた(笑) pathの設定とかちゃんとやっとけばそのうちなんとかなる気がする
https://w.atwiki.jp/java_pro/pages/30.html
import java.io.*; public class EvenNumber { public static void main(String[] args){ for (int i = 2; i = 100; i = i + 2){ System.out.println(i); } } }
https://w.atwiki.jp/java_pro/pages/35.html
import java.io.*; public class Copy2_01 { public static void main(String[] args){ BufferedReader reader = new BufferedReader(new InputStreamReader(System.in)); try { String line; while ((line = reader.readLine()) != null){ System.out.println("こんにちは、" + line + "さん!"); } } catch (IOException e){ System.out.println(e); } } }